<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   实例详解机器学习如何解决问题  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://dataunion.org/10588.html",
                  host: "http://dataunion.org",
                  prePath: "http://dataunion.org",
                  scheme: "http",
                  pathBase: "http://dataunion.org/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466460957: Accept with keywords: (title(0.0):社区,实例,解决问题,数盟, topn(0.533333333333):流程,数盟,分布,负例,空间,测试集,特征抽取,特征,假设,模型,数据分布,子集,文章,解决问题,函数,矩阵,离线,建模,噪音,工业界,交易额,梯度下降,线性,目标,优化,问题,数据,损失,归一化,维度).-->
 </head>
 <body onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    实例详解机器学习如何解决问题
   </h1>
  </div>
  <div class="container" id="xmain">
   ﻿﻿
   <title>
    实例详解机器学习如何解决问题 | 数盟社区
   </title>
   <!-- All in One SEO Pack 2.2.7.6.2 by Michael Torbert of Semper Fi Web Design[32,61] -->
   <!-- /all in one seo pack -->
   <!--
<div align="center">
<a href="http://strata.oreilly.com.cn/hadoop-big-data-cn?cmp=mp-data-confreg-home-stcn16_dataunion_pc" target="_blank"><img src="http://dataunion.org/wp-content/uploads/2016/05/stratabj.jpg"/ ></a>
</div>
-->
   <header id="header-web">
    <div class="header-main">
     <hgroup class="logo">
      <h1>
       <a href="http://dataunion.org/" rel="home" title="数盟社区">
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/logo.png"/>
       </a>
      </h1>
     </hgroup>
     <!--logo-->
     <nav class="header-nav">
      <ul class="menu" id="menu-%e4%b8%bb%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-71" id="menu-item-71">
        <a href="http://dataunion.org/category/events" title="events">
         活动
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22457" id="menu-item-22457">
          <a href="http://dataunion.org/2016timeline">
           2016档期
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22459" id="menu-item-22459">
          <a href="http://dataunion.org/category/parterc">
           合作会议
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor menu-item-has-children menu-item-20869" id="menu-item-20869">
        <a href="http://dataunion.org/category/tech" title="articles">
         文章
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20867" id="menu-item-20867">
          <a href="http://dataunion.org/category/tech/base" title="base">
           基础架构
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-3302" id="menu-item-3302">
          <a href="http://dataunion.org/category/tech/ai" title="ai">
           人工智能
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3303" id="menu-item-3303">
          <a href="http://dataunion.org/category/tech/analysis" title="analysis">
           数据分析
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21920" id="menu-item-21920">
          <a href="http://dataunion.org/category/tech/dm">
           数据挖掘
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3314" id="menu-item-3314">
          <a href="http://dataunion.org/category/tech/viz" title="viz">
           可视化
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3305" id="menu-item-3305">
          <a href="http://dataunion.org/category/tech/devl" title="devl">
           编程语言
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-20876" id="menu-item-20876">
        <a href="http://dataunion.org/category/industry">
         行业
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16328" id="menu-item-16328">
          <a href="http://dataunion.org/category/industry/case" title="case">
           行业应用
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2112" id="menu-item-2112">
          <a href="http://dataunion.org/category/industry/demo" title="demo">
           Demo展示
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21562" id="menu-item-21562">
          <a href="http://dataunion.org/category/industry/news">
           行业资讯
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-311" id="menu-item-311">
        <a href="http://dataunion.org/category/sources" title="sources">
         资源
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20870" id="menu-item-20870">
        <a href="http://dataunion.org/category/books" title="book">
         图书
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21363" id="menu-item-21363">
        <a href="http://dataunion.org/category/training">
         课程
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-21853" id="menu-item-21853">
        <a href="http://dataunion.org/category/jobs">
         职位
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22050" id="menu-item-22050">
          <a href="http://dataunion.org/category/career">
           职业规划
          </a>
         </li>
        </ul>
       </li>
      </ul>
     </nav>
     <!--header-nav-->
    </div>
   </header>
   <!--header-web-->
   <div id="main">
    <div id="soutab">
     <form action="http://dataunion.org/" class="search" method="get">
     </form>
    </div>
    <div id="container">
     <nav id="mbx">
      当前位置：
      <a href="http://dataunion.org">
       首页
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech">
       文章
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech/ai">
       人工智能
      </a>
      &gt;  正文
     </nav>
     <!--mbx-->
     <article class="content">
      <header align="centre" class="contenttitle">
       <div class="mscc">
        <h1 class="mscctitle">
         <a href="http://dataunion.org/10588.html">
          实例详解机器学习如何解决问题
         </a>
        </h1>
        <address class="msccaddress ">
         <em>
          4,060 次阅读 -
         </em>
         <a href="http://dataunion.org/category/tech/ai" rel="category tag">
          人工智能
         </a>
        </address>
       </div>
      </header>
      <div class="content-text">
       <p>
        作者：美团技术团队
       </p>
       <h1 id="-">
        前言
       </h1>
       <p>
        随着大数据时代的到来，机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界，机器学习都是一个炙手可热的方向，但是学术界和工业界对机器学习的研究各有侧重，学术界侧重于对机器学习理论的研究，工业界侧重于如何用机器学习来解决实际问题。我们结合美团在机器学习上的实践，进行一个实战（InAction）系列的介绍（带“机器学习InAction系列”标签的文章），介绍机器学习在解决工业界问题的实战中所需的基本技术、经验和技巧。本文主要结合实际问题，概要地介绍机器学习解决实际问题的整个流程，包括对问题建模、准备训练数据、抽取特征、训练模型和优化模型等关键环节；另外几篇则会对这些关键环节进行更深入地介绍。
       </p>
       <p>
        下文分为1）机器学习的概述，2）对问题建模，3）准备训练数据，4）抽取特征，5）训练模型，6）优化模型，7）总结 共7个章节进行介绍。
       </p>
       <hr/>
       <h1 id="-">
        机器学习的概述：
       </h1>
       <h3 id="-">
        什么是机器学习？
       </h3>
       <p>
        随着机器学习在实际工业领域中不断获得应用，这个词已经被赋予了各种不同含义。在本文中的“机器学习”含义与wikipedia上的解释比较契合，如下：
        <br/>
        Machine learning is a scientific discipline that deals with the construction and study of algorithms that can learn from data.
       </p>
       <p>
        机器学习可以分为无监督学习（unsupervised learning）和有监督学习（supervised learning），在工业界中，有监督学习是更常见和更有价值的方式，下文中主要以这种方式展开介绍。如下图中所示，有监督的机器学习在解决实际问题时，有两个流程，一个是离线训练流程（蓝色箭头），包含数据筛选和清洗、特征抽取、模型训练和优化模型等环节；另一个流程则是应用流程（绿色箭头），对需要预估的数据，抽取特征，应用离线训练得到的模型进行预估，获得预估值作用在实际产品中。在这两个流程中，离线训练是最有技术挑战的工作（在线预估流程很多工作可以复用离线训练流程的工作），所以下文主要介绍离线训练流程。
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/model.png"/>
       </p>
       <h3 id="-model-">
        什么是模型（model）？
       </h3>
       <p>
        模型，是机器学习中的一个重要概念，简单的讲，指特征空间到输出空间的映射；一般由模型的假设函数和参数w组成（下面公式就是Logistic Regression模型的一种表达，在训练模型的章节做稍详细的解释）；一个模型的假设空间（hypothesis space），指给定模型所有可能w对应的输出空间组成的集合。工业界常用的模型有Logistic Regression（简称LR）、Gradient Boosting Decision Tree（简称GBDT）、Support Vector Machine（简称SVM）、Deep Neural Network（简称DNN）等。
        <br/>
        <img src="http://latex.codecogs.com/png.latex?h_{w}\left%20(%20x%20\right%20)=P\left%20(%20y=1|x;w%20\right%20)%20=\frac{1}{1+e^{-wx}}"/>
        <br/>
        模型训练就是基于训练数据，获得一组参数w，使得特定目标最优，即获得了特征空间到输出空间的最优映射，具体怎么实现，见训练模型章节。
       </p>
       <h3 id="-">
        为什么要用机器学习解决问题？
       </h3>
       <ul>
        <li>
         目前处于大数据时代，到处都有成T成P的数据，简单规则处理难以发挥这些数据的价值；
        </li>
        <li>
         廉价的高性能计算，使得基于大规模数据的学习时间和代价降低；
        </li>
        <li>
         廉价的大规模存储，使得能够更快地和代价更小地处理大规模数据；
        </li>
        <li>
         存在大量高价值的问题，使得花大量精力用机器学习解决问题后，能获得丰厚收益。
        </li>
       </ul>
       <h3 id="-">
        机器学习应该用于解决什么问题？
       </h3>
       <ul>
        <li>
         目标问题需要价值巨大，因为机器学习解决问题有一定的代价；
        </li>
        <li>
         目标问题有大量数据可用，有大量数据才能使机器学习比较好地解决问题（相对于简单规则或人工）；
        </li>
        <li>
         目标问题由多种因素（特征）决定，机器学习解决问题的优势才能体现（相对于简单规则或人工）；
        </li>
        <li>
         目标问题需要持续优化，因为机器学习可以基于数据自我学习和迭代，持续地发挥价值。
        </li>
       </ul>
       <hr/>
       <h1 id="-">
        对问题建模
       </h1>
       <p>
        本文以DEAL（团购单）交易额预估问题为例（就是预估一个给定DEAL一段时间内卖了多少钱），介绍使用机器学习如何解决问题。首先需要：
       </p>
       <ul>
        <li>
         收集问题的资料，理解问题，成为这个问题的专家；
        </li>
        <li>
         拆解问题，简化问题，将问题转化机器可预估的问题。
        </li>
       </ul>
       <p>
        深入理解和分析DEAL交易额后，可以将它分解为如下图的几个问题：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/deal_problem.png"/>
       </p>
       <h3 id="-">
        单个模型？多个模型？如何来选择？
       </h3>
       <p>
        按照上图进行拆解后，预估DEAL交易额就有2种可能模式，一种是直接预估交易额；另一种是预估各子问题，如建立一个用户数模型和建立一个访购率模型（访问这个DEAL的用户会购买的单子数），再基于这些子问题的预估值计算交易额。
       </p>
       <ul>
        <li>
         不同方式有不同优缺点，具体如下：
        </li>
       </ul>
       <table>
        <thead>
         <tr>
          <th>
           模式
          </th>
          <th>
           缺点
          </th>
          <th>
           优点
          </th>
         </tr>
        </thead>
        <tbody>
         <tr>
          <td>
           单模型
          </td>
          <td>
           1. 预估难度大
           <br/>
           2. 风险比较高
          </td>
          <td>
           1. 理论上可以获得最优预估（实际上很难）
           <br/>
           2. 一次解决问题
          </td>
         </tr>
         <tr>
          <td>
           多模型
          </td>
          <td>
           1. 可能产生积累误差
           <br/>
           2. 训练和应用成本高
          </td>
          <td>
           1. 单个子模型更容易实现比较准地预估
           <br/>
           2. 可以调整子模型的融合方式，以达到最佳效果
          </td>
         </tr>
        </tbody>
       </table>
       <ul>
        <li>
         选择哪种模式？
         <br/>
         1）问题可预估的难度，难度大，则考虑用多模型；
         <br/>
         2）问题本身的重要性，问题很重要，则考虑用多模型；
         <br/>
         3）多个模型的关系是否明确，关系明确，则可以用多模型。
        </li>
        <li>
         如果采用多模型，如何融合？
         <br/>
         可以根据问题的特点和要求进行线性融合，或进行复杂的融合。以本文问题为例，至少可以有如下两种：
        </li>
       </ul>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/model_merg.png"/>
       </p>
       <h3 id="-">
        模型选择
       </h3>
       <p>
        对于DEAL交易额这个问题，我们认为直接预估难度很大，希望拆成子问题进行预估，即多模型模式。那样就需要建立用户数模型和访购率模型，因为机器学习解决问题的方式类似，下文只以访购率模型为例。要解决访购率问题，首先要选择模型，我们有如下的一些考虑：
       </p>
       <ul>
        <li>
         主要考虑
         <br/>
         1）选择与业务目标一致的模型；
         <br/>
         2）选择与训练数据和特征相符的模型。
         <br/>
         <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
         <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57686b1c08413160649532" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
          <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
           <span class="crayon-title">
           </span>
           <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
            <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
             <div class="crayon-button-icon">
             </div>
            </div>
            <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
             <div class="crayon-button-icon">
             </div>
            </div>
            <div class="crayon-button crayon-wrap-button" title="切换自动换行">
             <div class="crayon-button-icon">
             </div>
            </div>
            <div class="crayon-button crayon-expand-button" title="点击展开代码">
             <div class="crayon-button-icon">
             </div>
            </div>
            <div class="crayon-button crayon-copy-button" title="复制代码">
             <div class="crayon-button-icon">
             </div>
            </div>
            <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
             <div class="crayon-button-icon">
             </div>
            </div>
           </div>
          </div>
          <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
          </div>
          <div class="crayon-plain-wrap">
           <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
            训练数据少，High Level特征多，则使用“复杂”的非线性模型（流行的GBDT、Random Forest等）；
训练数据很大量，Low Level特征多，则使用“简单”的线性模型（流行的LR、Linear-SVM等）。
           </textarea>
          </div>
          <div class="crayon-main" style="">
           <table class="crayon-table">
            <tbody>
             <tr class="crayon-row">
              <td class="crayon-nums " data-settings="show">
               <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
                <div class="crayon-num" data-line="crayon-57686b1c08413160649532-1">
                 1
                </div>
                <div class="crayon-num crayon-striped-num" data-line="crayon-57686b1c08413160649532-2">
                 2
                </div>
               </div>
              </td>
              <td class="crayon-code">
               <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
                <div class="crayon-line" id="crayon-57686b1c08413160649532-1">
                 训练数据少，
                 <span class="crayon-e">
                  High
                 </span>
                 <span class="crayon-i">
                  Level
                 </span>
                 特征多，则使用“复杂”的非线性模型（流行的
                 <span class="crayon-i">
                  GBDT
                 </span>
                 、
                 <span class="crayon-e">
                  Random
                 </span>
                 <span class="crayon-i">
                  Forest
                 </span>
                 等）；
                </div>
                <div class="crayon-line crayon-striped-line" id="crayon-57686b1c08413160649532-2">
                 训练数据很大量，
                 <span class="crayon-e">
                  Low
                 </span>
                 <span class="crayon-i">
                  Level
                 </span>
                 特征多，则使用“简单”的线性模型（流行的
                 <span class="crayon-i">
                  LR
                 </span>
                 、
                 <span class="crayon-v">
                  Linear
                 </span>
                 <span class="crayon-o">
                  -
                 </span>
                 <span class="crayon-i">
                  SVM
                 </span>
                 等）。
                </div>
               </div>
              </td>
             </tr>
            </tbody>
           </table>
          </div>
         </div>
         <!-- [Format Time: 0.0075 seconds] -->
        </li>
        <li>
         补充考虑
         <br/>
         1）当前模型是否被工业界广泛使用；
         <br/>
         2）当前模型是否有比较成熟的开源工具包（公司内或公司外）；
         <br/>
         3）当前工具包能够的处理数据量能否满足要求；
         <br/>
         4）自己对当前模型理论是否了解，是否之前用过该模型解决问题。
        </li>
       </ul>
       <p>
        为实际问题选择模型，需要转化问题的业务目标为模型评价目标，转化模型评价目标为模型优化目标；根据业务的不同目标，选择合适的模型，具体关系如下：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/select_model.png"/>
       </p>
       <p>
        通常来讲，预估真实数值（回归）、大小顺序（排序）、目标所在的正确区间（分类）的难度从大到小，根据应用所需，尽可能选择难度小的目标进行。对于访购率预估的应用目标来说，我们至少需要知道大小顺序或真实数值，所以我们可以选择Area Under Curve（AUC）或Mean Absolute Error（MAE）作为评估目标，以Maximum likelihood为模型损失函数（即优化目标）。综上所述，我们选择spark版本 GBDT或LR，主要基于如下考虑：
        <br/>
        1）可以解决排序或回归问题；
        <br/>
        2）我们自己实现了算法，经常使用，效果很好；
        <br/>
        3）支持海量数据；
        <br/>
        4）工业界广泛使用。
       </p>
       <hr/>
       <h1 id="-">
        准备训练数据
       </h1>
       <p>
        深入理解问题，针对问题选择了相应的模型后，接下来则需要准备数据；数据是机器学习解决问题的根本，数据选择不对，则问题不可能被解决，所以准备训练数据需要格外的小心和注意：
       </p>
       <h3 id="-">
        注意点：
       </h3>
       <ul>
        <li>
         待解决问题的数据本身的分布尽量一致；
        </li>
        <li>
         训练集/测试集分布与线上预测环境的数据分布尽可能一致，这里的分布是指（x,y）的分布，不仅仅是y的分布；
        </li>
        <li>
         y数据噪音尽可能小，尽量剔除y有噪音的数据；
        </li>
        <li>
         非必要不做采样，采样常常可能使实际数据分布发生变化，但是如果数据太大无法训练或者正负比例严重失调（如超过100:1）,则需要采样解决。
        </li>
       </ul>
       <h3 id="-">
        常见问题及解决办法
       </h3>
       <ul>
        <li>
         待解决问题的数据分布不一致：
         <br/>
         1）访购率问题中DEAL数据可能差异很大，如美食DEAL和酒店DEAL的影响因素或表现很不一致，需要做特别处理；要么对数据提前归一化，要么将分布不一致因素作为特征，要么对各类别DEAL单独训练模型。
        </li>
        <li>
         数据分布变化了：
         <br/>
         1）用半年前的数据训练模型，用来预测当前数据，因为数据分布随着时间可能变化了，效果可能很差。尽量用近期的数据训练，来预测当前数据，历史的数据可以做降权用到模型，或做transfer learning。
        </li>
        <li>
         y数据有噪音：
         <br/>
         1）在建立CTR模型时，将用户没有看到的Item作为负例，这些Item是因为用户没有看到才没有被点击，不一定是用户不喜欢而没有被点击，所以这些Item是有噪音的。可以采用一些简单规则，剔除这些噪音负例，如采用skip-above思想，即用户点过的Item之上，没有点过的Item作为负例（假设用户是从上往下浏览Item）。
        </li>
        <li>
         采样方法有偏，没有覆盖整个集合：
         <br/>
         1）访购率问题中，如果只取只有一个门店的DEAL进行预估，则对于多门店的DEAL无法很好预估。应该保证一个门店的和多个门店的DEAL数据都有；
         <br/>
         2）无客观数据的二分类问题，用规则来获得正/负例，规则对正/负例的覆盖不全面。应该随机抽样数据，进行人工标注，以确保抽样数据和实际数据分布一致。
        </li>
       </ul>
       <h3 id="-">
        访购率问题的训练数据
       </h3>
       <ul>
        <li>
         收集N个月的DEAL数据（x）及相应访购率（y）；
        </li>
        <li>
         收集最近N个月，剔除节假日等非常规时间 （保持分布一致）；
        </li>
        <li>
         只收集在线时长&gt;T 且 访问用户数 &gt; U的DEAL （减少y的噪音）；
        </li>
        <li>
         考虑DEAL销量生命周期 （保持分布一致）；
        </li>
        <li>
         考虑不同城市、不同商圈、不同品类的差别 （保持分布一致）。
        </li>
       </ul>
       <hr/>
       <h1 id="-">
        抽取特征
       </h1>
       <p>
        完成数据筛选和清洗后，就需要对数据抽取特征，就是完成输入空间到特征空间的转换（见下图）。针对线性模型或非线性模型需要进行不同特征抽取，线性模型需要更多特征抽取工作和技巧，而非线性模型对特征抽取要求相对较低。
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/extract_fea.png"/>
       </p>
       <p>
        通常，特征可以分为High Level与Low Level，High Level指含义比较泛的特征，Low Level指含义比较特定的特征，举例来说：
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57686b1c0842a650312527" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          DEAL A1属于POIA，人均50以下，访购率高；
    DEAL A2属于POIA，人均50以上，访购率高；
    DEAL B1属于POIB，人均50以下，访购率高；
    DEAL B2属于POIB，人均50以上，访购率底；
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57686b1c0842a650312527-1">
               1
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57686b1c0842a650312527-2">
               2
              </div>
              <div class="crayon-num" data-line="crayon-57686b1c0842a650312527-3">
               3
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57686b1c0842a650312527-4">
               4
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57686b1c0842a650312527-1">
               <span class="crayon-h">
               </span>
               <span class="crayon-e">
                DEAL
               </span>
               <span class="crayon-i">
                A1
               </span>
               属于
               <span class="crayon-i">
                POIA
               </span>
               ，人均
               <span class="crayon-cn">
                50
               </span>
               以下，访购率高；
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57686b1c0842a650312527-2">
               <span class="crayon-h">
               </span>
               <span class="crayon-e">
                DEAL
               </span>
               <span class="crayon-i">
                A2
               </span>
               属于
               <span class="crayon-i">
                POIA
               </span>
               ，人均
               <span class="crayon-cn">
                50
               </span>
               以上，访购率高；
              </div>
              <div class="crayon-line" id="crayon-57686b1c0842a650312527-3">
               <span class="crayon-h">
               </span>
               <span class="crayon-e">
                DEAL
               </span>
               <span class="crayon-i">
                B1
               </span>
               属于
               <span class="crayon-i">
                POIB
               </span>
               ，人均
               <span class="crayon-cn">
                50
               </span>
               以下，访购率高；
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57686b1c0842a650312527-4">
               <span class="crayon-h">
               </span>
               <span class="crayon-e">
                DEAL
               </span>
               <span class="crayon-i">
                B2
               </span>
               属于
               <span class="crayon-i">
                POIB
               </span>
               ，人均
               <span class="crayon-cn">
                50
               </span>
               以上，访购率底；
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0016 seconds] -->
       <p>
        基于上面的数据，可以抽到两种特征，POI（门店）或人均消费；POI特征则是Low Level特征，人均消费则是High Level特征；假设模型通过学习，获得如下预估：
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57686b1c08431637110239" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          如果DEALx 属于POIA（Low Level feature），访购率高；
如果DEALx 人均50以下（High Level feature），访购率高。
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57686b1c08431637110239-1">
               1
              </div>
              <div class="crayon-num crayon-striped-num" data-line="crayon-57686b1c08431637110239-2">
               2
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57686b1c08431637110239-1">
               如果
               <span class="crayon-i">
                DEALx
               </span>
               <span class="crayon-h">
               </span>
               属于
               <span class="crayon-i">
                POIA
               </span>
               （
               <span class="crayon-e">
                Low
               </span>
               <span class="crayon-e">
                Level
               </span>
               <span class="crayon-i">
                feature
               </span>
               ），访购率高；
              </div>
              <div class="crayon-line crayon-striped-line" id="crayon-57686b1c08431637110239-2">
               如果
               <span class="crayon-i">
                DEALx
               </span>
               <span class="crayon-h">
               </span>
               人均
               <span class="crayon-cn">
                50
               </span>
               以下（
               <span class="crayon-e">
                High
               </span>
               <span class="crayon-e">
                Level
               </span>
               <span class="crayon-i">
                feature
               </span>
               ），访购率高。
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0011 seconds] -->
       <p>
        所以，总体上，Low Level 比较有针对性，单个特征覆盖面小（含有这个特征的数据不多），特征数量（维度）很大。High Level比较泛化，单个特征覆盖面大（含有这个特征的数据很多），特征数量（维度）不大。长尾样本的预测值主要受High Level特征影响。高频样本的预测值主要受Low Level特征影响。
       </p>
       <p>
        对于访购率问题，有大量的High Level或Low Level的特征，其中一些展示在下图：
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/fea_list.png"/>
       </p>
       <ul>
        <li>
         非线性模型的特征
         <br/>
         1）可以主要使用High Level特征，因为计算复杂度大，所以特征维度不宜太高；
         <br/>
         2）通过High Level非线性映射可以比较好地拟合目标。
        </li>
        <li>
         线性模型的特征
         <br/>
         1）特征体系要尽可能全面，High Level和Low Level都要有；
         <br/>
         2）可以将High Level转换Low Level，以提升模型的拟合能力。
        </li>
       </ul>
       <h3 id="-">
        特征归一化
       </h3>
       <p>
        特征抽取后，如果不同特征的取值范围相差很大，最好对特征进行归一化，以取得更好的效果，常见的归一化方式如下：
       </p>
       <ul>
        <li>
         Rescaling：
         <br/>
         归一化到[0,1] 或 [-1，1]，用类似方式：
         <br/>
         <img src="http://latex.codecogs.com/png.latex?x^{'}=\frac{x-min(x)}{max(x)-min(x)}"/>
        </li>
       </ul>
       <ul>
        <li>
         Standardization：
         <br/>
         设
         <img src="http://latex.codecogs.com/png.latex?\mu"/>
         为x分布的均值，
         <img src="http://latex.codecogs.com/png.latex?\sigma"/>
         为x分布的标准差；
         <br/>
         <img src="http://latex.codecogs.com/png.latex?x^{'}=\frac{x-\mu%20}{\alpha%20}"/>
        </li>
        <li>
         Scaling to unit length：
         <br/>
         归一化到单位长度向量
         <br/>
         <img src="http://latex.codecogs.com/png.latex?x^{'}=\frac{x}{\left%20\|%20x%20\right%20\|}"/>
        </li>
       </ul>
       <h3 id="-">
        特征选择
       </h3>
       <p>
        特征抽取和归一化之后，如果发现特征太多，导致模型无法训练，或很容易导致模型过拟合，则需要对特征进行选择，挑选有价值的特征。
       </p>
       <ul>
        <li>
         Filter：
         <br/>
         假设特征子集对模型预估的影响互相独立，选择一个特征子集，分析该子集和数据Label的关系，如果存在某种正相关，则认为该特征子集有效。衡量特征子集和数据Label关系的算法有很多，如Chi-square，Information Gain。
        </li>
        <li>
         Wrapper：
         <br/>
         选择一个特征子集加入原有特征集合，用模型进行训练，比较子集加入前后的效果，如果效果变好，则认为该特征子集有效，否则认为无效。
        </li>
        <li>
         Embedded：
         <br/>
         将特征选择和模型训练结合起来，如在损失函数中加入L1 Norm ，L2 Norm。
        </li>
       </ul>
       <hr/>
       <h1 id="-">
        训练模型
       </h1>
       <p>
        完成特征抽取和处理后，就可以开始模型训练了，下文以简单且常用的Logistic Regression模型（下称LR模型）为例，进行简单介绍。
        <br/>
        设有m个（x,y）训练数据，其中x为特征向量，y为label，
        <img src="http://latex.codecogs.com/png.latex?y\in\left%20\{%200,1%20\right%20\}"/>
        ；w为模型中参数向量，即模型训练中需要学习的对象。
        <br/>
        所谓训练模型，就是选定假说函数和损失函数，基于已有训练数据（x,y），不断调整w，使得损失函数最优，相应的w就是最终学习结果，也就得到相应的模型。
       </p>
       <h3 id="-">
        模型函数
       </h3>
       <p>
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57686b1c0843b452413649" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          1）假说函数，即假设x和y存在一种函数关系：
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57686b1c0843b452413649-1">
               1
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57686b1c0843b452413649-1">
               <span class="crayon-cn">
                1
               </span>
               ）假说函数，即假设
               <span class="crayon-i">
                x
               </span>
               和
               <span class="crayon-i">
                y
               </span>
               存在一种函数关系：
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0007 seconds] -->
       <p>
        <img src="http://latex.codecogs.com/png.latex?h_{w}\left%20(%20x%20\right%20)=P\left%20(%20y=1|x;w%20\right%20)%20=\frac{1}{1+e^{-wx}}"/>
       </p>
       <!-- Crayon Syntax Highlighter v_2.7.2_beta -->
       <div class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" id="crayon-57686b1c08441056984026" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
        <div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
         <span class="crayon-title">
         </span>
         <div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;">
          <div class="crayon-button crayon-nums-button" title="切换是否显示行编号">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-plain-button" title="纯文本显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-wrap-button" title="切换自动换行">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-expand-button" title="点击展开代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-copy-button" title="复制代码">
           <div class="crayon-button-icon">
           </div>
          </div>
          <div class="crayon-button crayon-popup-button" title="在新窗口中显示代码">
           <div class="crayon-button-icon">
           </div>
          </div>
         </div>
        </div>
        <div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;">
        </div>
        <div class="crayon-plain-wrap">
         <textarea class="crayon-plain print-no" data-settings="dblclick" readonly="" style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;" wrap="soft">
          2）损失函数，基于上述假设函数，构建模型损失函数（优化目标），在LR中通常以（x,y）的最大似然估计为目标：
         </textarea>
        </div>
        <div class="crayon-main" style="">
         <table class="crayon-table">
          <tbody>
           <tr class="crayon-row">
            <td class="crayon-nums " data-settings="show">
             <div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;">
              <div class="crayon-num" data-line="crayon-57686b1c08441056984026-1">
               1
              </div>
             </div>
            </td>
            <td class="crayon-code">
             <div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
              <div class="crayon-line" id="crayon-57686b1c08441056984026-1">
               <span class="crayon-cn">
                2
               </span>
               ）损失函数，基于上述假设函数，构建模型损失函数（优化目标），在
               <span class="crayon-i">
                LR
               </span>
               中通常以（
               <span class="crayon-v">
                x
               </span>
               <span class="crayon-sy">
                ,
               </span>
               <span class="crayon-i">
                y
               </span>
               ）的最大似然估计为目标：
              </div>
             </div>
            </td>
           </tr>
          </tbody>
         </table>
        </div>
       </div>
       <!-- [Format Time: 0.0011 seconds] -->
       <p>
        <img src="http://latex.codecogs.com/png.latex?L\left%20(%20w%20%20\right%20)=\sum_{i=1}^{m}y^{(i)}logh_{w}(x^{(i)})+(1-y^{(i)})log(1-h_{w}(x^{(i)}))"/>
       </p>
       <h3 id="-">
        优化算法
       </h3>
       <ul>
        <li>
         梯度下降（Gradient Descent）
         <br/>
         即w沿着损失函数的负梯度方向进行调整，示意图见下图，
         <img src="http://latex.codecogs.com/png.latex?L\left%20(%20w\right%20)"/>
         的梯度即一阶导数（见下式），梯度下降有多种类型，如随机梯度下降或批量梯度下降。
         <br/>
         <img src="http://latex.codecogs.com/png.latex?L^{'}\left%20(%20w\right%20)=\sum_{i=1}^{m}(y^{(i)}-h_{w}(x^{(i)}))x^{(i)}"/>
         <br/>
         随机梯度下降（Stochastic Gradient Descent），每一步随机选择一个样本，计算相应的梯度，并完成w的更新，如下式，
         <br/>
         <img src="http://latex.codecogs.com/png.latex?w:=w+\eta%20L^{'}(w)=w+\eta%20(y^{(i)}-h_{w}(x^{(i)}))x^{(i)}"/>
         <br/>
         批量梯度下降（Batch Gradient Descent）,每一步都计算训练数据中的所有样本对应的梯度，w沿着这个梯度方向迭代，即
         <br/>
         <img src="http://latex.codecogs.com/png.latex?w:=w+\eta%20L^{'}(w)=w+\eta%20\sum_{i=1}^{m}(y^{(i)}-h_{w}(x^{(i)}))x^{(i)}"/>
        </li>
       </ul>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/gradient_descent.png"/>
       </p>
       <ul>
        <li>
         牛顿法（Newton’s Method）
         <br/>
         牛顿法的基本思想是在极小点附近通过对目标函数做二阶Taylor展开，进而找到L(w)的极小点的估计值。形象地讲，在w
         <sub>
          k
         </sub>
         处做切线，该切线与L(w)=0的交点即为下一个迭代点w
         <sub>
          k+1
         </sub>
         （示意图如下）。w的更新公式如下，其中目标函数的二阶偏导数，即为大名鼎鼎的Hessian矩阵。
         <br/>
         <img src="http://latex.codecogs.com/png.latex?w:=w-\frac{L^{'}(w)}{L^{''}(w)}=w-H^{-1}L^{'}(w)"/>
         <br/>
         拟牛顿法（Quasi-Newton Methods）：计算目标函数的二阶偏导数，难度较大，更为复杂的是目标函数的Hessian矩阵无法保持正定；不用二阶偏导数而构造出可以近似Hessian矩阵的逆的正定对称阵，从而在”拟牛顿”的条件下优化目标函数。
         <br/>
         BFGS： 使用BFGS公式对H(w)进行近似，内存中需要放H(w),内存需要O(m
         <sup>
          2
         </sup>
         )级别；
         <br/>
         L-BFGS：存储有限次数（如k次）的更新矩阵
         <img src="http://latex.codecogs.com/png.latex?\Delta%20H_{i}"/>
         ，用这些更新矩阵生成新的H(w),内存降至O(m)级别；
         <br/>
         OWLQN: 如果在目标函数中引入L1正则化，需要引入虚梯度来解决目标函数不可导问题，OWLQN就是用来解决这个问题。
         <br/>
         <img src="http://dataunion.org/wp-content/uploads/2015/02/newton.png"/>
        </li>
       </ul>
       <ul>
        <li>
         Coordinate Descent
         <br/>
         对于w，每次迭代，固定其他维度不变，只对其一个维度进行搜索，确定最优下降方向（示意图如下），公式表达如下：
         <br/>
         <img src="http://latex.codecogs.com/png.latex?w_{i}:=_{%20%20\alpha%20\epsilon%20R}^{argmin}%20f(w_{1},...%20,w_{i-1},\alpha,w_{i+1},...,w_{n})"/>
        </li>
       </ul>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/coordinate_descent.jpg"/>
       </p>
       <hr/>
       <h1 id="-">
        优化模型
       </h1>
       <p>
        经过上文提到的数据筛选和清洗、特征设计和选择、模型训练，就得到了一个模型，但是如果发现效果不好？怎么办？
        <br/>
        【首先】
        <br/>
        反思目标是否可预估，数据和特征是否存在bug。
        <br/>
        【然后】
        <br/>
        分析一下模型是Overfitting还是Underfitting，从数据、特征和模型等环节做针对性优化。
       </p>
       <h3 id="underfitting-overfitting">
        Underfitting &amp; Overfitting
       </h3>
       <p>
        所谓Underfitting，即模型没有学到数据内在关系，如下图左一所示，产生分类面不能很好的区分X和O两类数据；产生的深层原因，就是模型假设空间太小或者模型假设空间偏离。
        <br/>
        所谓Overfitting，即模型过渡拟合了训练数据的内在关系，如下图右一所示，产生分类面过好地区分X和O两类数据，而真实分类面可能并不是这样，以至于在非训练数据上表现不好；产生的深层原因，是巨大的模型假设空间与稀疏的数据之间的矛盾。
       </p>
       <p>
        <img src="http://dataunion.org/wp-content/uploads/2015/02/underfitting_overfitting.png"/>
       </p>
       <p>
        在实战中，可以基于模型在训练集和测试集上的表现来确定当前模型到底是Underfitting还是Overfitting，判断方式如下表：
       </p>
       <table>
        <thead>
         <tr>
          <th>
           训练集表现
          </th>
          <th>
           测试集表现
          </th>
          <th>
           问题
          </th>
         </tr>
        </thead>
        <tbody>
         <tr>
          <td>
           &lt; 期望目标值
          </td>
          <td>
           &lt; 期望目标值
          </td>
          <td>
           Underfitting
          </td>
         </tr>
         <tr>
          <td>
           &gt; 期望目标值
          </td>
          <td>
           接近或略逊于训练集
          </td>
          <td>
           合适
          </td>
         </tr>
         <tr>
          <td>
           &gt; 期望目标值
          </td>
          <td>
           远差于训练集
          </td>
          <td>
           Overfitting
          </td>
         </tr>
        </tbody>
       </table>
       <h3 id="-underfitting-overfitting-">
        怎么解决Underfitting和Overfitting问题？
       </h3>
       <table>
        <thead>
         <tr>
          <th>
           问题
          </th>
          <th>
           数据
          </th>
          <th>
           特征
          </th>
          <th>
           模型
          </th>
         </tr>
        </thead>
        <tbody>
         <tr>
          <td>
           Underfitting
          </td>
          <td>
           清洗数据
          </td>
          <td>
           1. 增加特征
           <br/>
           2. 删除噪音特征
          </td>
          <td>
           1. 调低正则项的惩罚参数
           <br/>
           2. 换更“复杂”的模型（如把线性模型换为非线性模型）
           <br/>
           3. 多个模型级联或组合
          </td>
         </tr>
         <tr>
          <td>
           Overfitting
          </td>
          <td>
           增加数据
          </td>
          <td>
           1. 进行特征选择
           <br/>
           2. 降维（如对特征进行聚类、主题模型进行处理等）
          </td>
          <td>
           1. 提高正则项的惩罚参数
           <br/>
           2. 减少训练迭代次数
           <br/>
           3. 换更“简单”的模型（如把非线性模型换为线性模型）
          </td>
         </tr>
        </tbody>
       </table>
       <hr/>
       <h1 id="-">
        总结
       </h1>
       <p>
        综上所述，机器学习解决问题涉及到问题建模、准备训练数据、抽取特征、训练模型和优化模型等关键环节，有如下要点：
       </p>
       <ol>
        <li>
         理解业务，分解业务目标，规划模型可预估的路线图。
        </li>
        <li>
         数据：
         <br/>
         y数据尽可能真实客观；
         <br/>
         训练集/测试集分布与线上应用环境的数据分布尽可能一致。
        </li>
        <li>
         特征：
         <br/>
         利用Domain Knowledge进行特征抽取和选择；
         <br/>
         针对不同类型的模型设计不同的特征。
        </li>
        <li>
         模型：
         <br/>
         针对不同业务目标、不同数据和特征，选择不同的模型；
         <br/>
         如果模型不符合预期，一定检查一下数据、特征、模型等处理环节是否有bug；
         <br/>
         考虑模型Underfitting和Qverfitting，针对性地优化。
        </li>
       </ol>
       <p>
        文章出处：
        <a href="http://tech.meituan.com/">
         http://tech.meituan.com/
        </a>
       </p>
      </div>
      <div>
       <strong>
        注：转载文章均来自于公开网络，仅供学习使用，不会用于任何商业用途，如果侵犯到原作者的权益，请您与我们联系删除或者授权事宜，联系邮箱：contact@dataunion.org。转载数盟网站文章请注明原文章作者，否则产生的任何版权纠纷与数盟无关。
       </strong>
      </div>
      <!--content_text-->
      <div class="fenxian">
       <!-- JiaThis Button BEGIN -->
       <div class="jiathis_style_32x32">
        <p class="jiathis_button_weixin">
        </p>
        <p class="jiathis_button_tsina">
        </p>
        <p class="jiathis_button_qzone">
        </p>
        <p class="jiathis_button_cqq">
        </p>
        <p class="jiathis_button_tumblr">
        </p>
        <a class="jiathis jiathis_txt jtico jtico_jiathis" href="http://www.jiathis.com/share" target="_blank">
        </a>
        <p class="jiathis_counter_style">
        </p>
       </div>
       <!-- JiaThis Button END -->
      </div>
     </article>
     <!--content-->
     <!--相关文章-->
     <div class="xianguan">
      <div class="xianguantitle">
       相关文章！
      </div>
      <ul class="pic">
       <li>
        <a href="http://dataunion.org/20758.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/09/t012aec1078cd96f01f-300x199.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20758.html" rel="bookmark" title="推荐一些从零开始学习机器学习算法的方法">
         推荐一些从零开始学习机器学习算法的方法
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/20714.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/09/t011650727f6392a3f5-300x197.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20714.html" rel="bookmark" title="寻找最优参数解：最速下降法，牛顿下降法，阻尼牛顿法，拟牛顿法DFP/BFGS">
         寻找最优参数解：最速下降法，牛顿下降法，阻尼牛顿法，拟牛顿法DFP/BFGS
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/20636.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/09/t01034a6a3b660f0c04_副本-300x203.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20636.html" rel="bookmark" title="机器学习开发者的现代化攻略：对统计学微积分Say NO！">
         机器学习开发者的现代化攻略：对统计学微积分Say NO！
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/20632.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/08/t01e4f9fea2b69f4b1f-300x189.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20632.html" rel="bookmark" title="机器学习到底适合哪些人群学习？">
         机器学习到底适合哪些人群学习？
        </a>
       </li>
      </ul>
     </div>
     <!--相关文章-->
     <div class="comment" id="comments">
      <!-- You can start editing here. -->
      <!-- If comments are open, but there are no comments. -->
      <div class="title">
       期待你一针见血的评论，Come on！
      </div>
      <div id="respond">
       <p>
        不用想啦，马上
        <a href="http://dataunion.org/wp-login.php?redirect_to=http%3A%2F%2Fdataunion.org%2F10588.html">
         "登录"
        </a>
        发表自已的想法.
       </p>
      </div>
     </div>
     <!-- .nav-single -->
    </div>
    <!--Container End-->
    <aside id="sitebar">
     <div class="sitebar_list2">
      <div class="wptag">
       <span class="tagtitle">
        热门标签+
       </span>
       <div class="tagg">
        <ul class="menu" id="menu-%e5%8f%8b%e6%83%85%e9%93%be%e6%8e%a5">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1605" id="menu-item-1605">
          <a href="http://taidizh.com/">
           泰迪智慧
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20884" id="menu-item-20884">
          <a href="http://www.transwarp.cn/">
           星环科技
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3538" id="menu-item-3538">
          <a href="http://datall.org/">
           珈和遥感
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20888" id="menu-item-20888">
          <a href="http://www.chinahadoop.cn/">
           小象学院
          </a>
         </li>
        </ul>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <div class="textwidget">
       <div align="center">
        <a href="http://study.163.com/course/courseMain.htm?courseId=991022" target="_blank">
         <img src="http://dataunion.org/wp-content/uploads/2016/03/dv.jpg"/>
        </a>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       文章分类
      </h4>
      <div class="tagcloud">
       <a class="tag-link-44" href="http://dataunion.org/category/industry/demo" style="font-size: 10.204724409449pt;" title="4个话题">
        Demo展示
       </a>
       <a class="tag-link-31" href="http://dataunion.org/category/experts" style="font-size: 15.826771653543pt;" title="52个话题">
        专家团队
       </a>
       <a class="tag-link-870" href="http://dataunion.org/category/tech/ai" style="font-size: 19.795275590551pt;" title="273个话题">
        人工智能
       </a>
       <a class="tag-link-488" href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f" style="font-size: 8pt;" title="1个话题">
        加入数盟
       </a>
       <a class="tag-link-869" href="http://dataunion.org/category/tech/viz" style="font-size: 17.204724409449pt;" title="93个话题">
        可视化
       </a>
       <a class="tag-link-30" href="http://dataunion.org/category/partners" style="font-size: 10.645669291339pt;" title="5个话题">
        合作伙伴
       </a>
       <a class="tag-link-889" href="http://dataunion.org/category/parterc" style="font-size: 11.582677165354pt;" title="8个话题">
        合作会议
       </a>
       <a class="tag-link-104" href="http://dataunion.org/category/books" style="font-size: 12.96062992126pt;" title="15个话题">
        图书
       </a>
       <a class="tag-link-220" href="http://dataunion.org/category/tech/base" style="font-size: 19.850393700787pt;" title="281个话题">
        基础架构
       </a>
       <a class="tag-link-219" href="http://dataunion.org/category/tech/analysis" style="font-size: 19.409448818898pt;" title="232个话题">
        数据分析
       </a>
       <a class="tag-link-887" href="http://dataunion.org/category/tech/dm" style="font-size: 13.291338582677pt;" title="17个话题">
        数据挖掘
       </a>
       <a class="tag-link-34" href="http://dataunion.org/category/tech" style="font-size: 20.732283464567pt;" title="404个话题">
        文章
       </a>
       <a class="tag-link-1" href="http://dataunion.org/category/uncategorized" style="font-size: 22pt;" title="693个话题">
        未分类
       </a>
       <a class="tag-link-4" href="http://dataunion.org/category/events" style="font-size: 14.503937007874pt;" title="29个话题">
        活动
       </a>
       <a class="tag-link-890" href="http://dataunion.org/category/tech/%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0" style="font-size: 10.204724409449pt;" title="4个话题">
        深度学习
       </a>
       <a class="tag-link-221" href="http://dataunion.org/category/tech/devl" style="font-size: 18.968503937008pt;" title="193个话题">
        编程语言
       </a>
       <a class="tag-link-888" href="http://dataunion.org/category/career" style="font-size: 15.661417322835pt;" title="48个话题">
        职业规划
       </a>
       <a class="tag-link-5" href="http://dataunion.org/category/jobs" style="font-size: 14.11811023622pt;" title="25个话题">
        职位
       </a>
       <a class="tag-link-871" href="http://dataunion.org/category/industry" style="font-size: 15.716535433071pt;" title="49个话题">
        行业
       </a>
       <a class="tag-link-613" href="http://dataunion.org/category/industry/case" style="font-size: 16.984251968504pt;" title="84个话题">
        行业应用
       </a>
       <a class="tag-link-885" href="http://dataunion.org/category/industry/news" style="font-size: 17.425196850394pt;" title="102个话题">
        行业资讯
       </a>
       <a class="tag-link-10" href="http://dataunion.org/category/training" style="font-size: 14.228346456693pt;" title="26个话题">
        课程
       </a>
       <a class="tag-link-16" href="http://dataunion.org/category/sources" style="font-size: 15.661417322835pt;" title="48个话题">
        资源
       </a>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       功能
      </h4>
      <ul>
       <li>
        <a href="http://dataunion.org/wp-login.php?action=register">
         注册
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/wp-login.php">
         登录
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/feed">
         文章
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/comments/feed">
         评论
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="https://cn.wordpress.org/" title="基于WordPress，一个优美、先进的个人信息发布平台。">
         WordPress.org
        </a>
       </li>
      </ul>
     </div>
    </aside>
    <div class="clear">
    </div>
   </div>
   <!--main-->
   ﻿
   <footer id="dibu">
    <div class="about">
     <div class="right">
      <ul class="menu" id="menu-%e5%ba%95%e9%83%a8%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-18024" id="menu-item-18024">
        <a href="http://dataunion.org/category/partners">
         合作伙伴
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20881" id="menu-item-20881">
        <a href="http://dataunion.org/contribute">
         文章投稿
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20872" id="menu-item-20872">
        <a href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f">
         加入数盟
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22441" id="menu-item-22441">
        <a href="http://dataunion.org/f-links">
         友情链接
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20874" id="menu-item-20874">
        <a href="http://dataunion.org/aboutus">
         关于数盟
        </a>
       </li>
      </ul>
      <p class="banquan">
       数盟社区        ，
        做最棒的数据科学社区
      </p>
     </div>
     <div class="left">
      <ul class="bottomlist">
       <li>
        <a href="http://weibo.com/DataScientistUnion  " target="_blank" 　title="">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weibo.png"/>
        </a>
       </li>
       <li>
        <a class="cd-popup-trigger" href="http://dataunion.org/10588.html#0">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weixin.png"/>
        </a>
       </li>
      </ul>
      <div class="cd-popup">
       <div class="cd-popup-container">
        <h1>
         扫描二维码,加微信公众号
        </h1>
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/2014-12-06-1515289049.png"/>
        <a class="cd-popup-close" href="http://dataunion.org/10588.html">
        </a>
       </div>
       <!-- cd-popup-container -->
      </div>
      <!-- cd-popup -->
     </div>
    </div>
    <!--about-->
    <div class="bottom">
     <a href="http://dataunion.org/">
      数盟社区
     </a>
     <a href="http://www.miitbeian.gov.cn/" rel="external nofollow" target="_blank">
      京ICP备14026740号
     </a>
     联系我们：
     <a href="mailto:contact@dataunion.org" target="_blank">
      contact@dataunion.org
     </a>
     <div class="tongji">
     </div>
     <!--bottom-->
     <div class="scroll" id="scroll" style="display:none;">
      ︿
     </div>
    </div>
   </footer>
   <!--dibu-->
  </div>
 </body>
</html>